package com.zp.self.module.level_4_算法练习.数据结构.hash表;

import java.util.HashSet;
import java.util.Set;

/**
 * @author By ZengPeng
 */
public class 力扣_349_两个数组的交集 {
    //测试
    public static void main(String[] args) {
        int[] c = new 力扣_349_两个数组的交集().intersection(new int[]{1, 2, 2, 1}, new int[]{ 3, 3});
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+",");
        }
    }

    /**
     * 题目：给定两个数组 nums1 和 nums2 ，返回 它们的交集 。
     * 输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
     *
     * 示例 1：
     * 输入：nums1 = [1,2,2,1], nums2 = [2,2]
     * 输出：[2]
     *
     * 分析：
     *      1.用set  的hash判断
     *      2.位图法：0，1000    内存消耗太大了吧  -- 不太可取
     *      3.
     *
     * 边界值 & 注意点：
     *      1.
     **/

    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set  =new HashSet<>();
        Set<Integer> res  =new HashSet<>();
        for (int i = 0; i < nums1.length; i++) {
            set.add(nums1[i]);
        }
        for (int i = 0; i < nums2.length; i++) {
           if(set.contains(nums2[i])){
               res.add(nums2[i]);
            }
        }

        int[] resInt =new int[res.size()];
        int i =0;
        for (Integer integer : res) {
            resInt[i++] =integer;
        }
        return resInt ;
    }

}
